Stereoscopic rendering using vertix shader instancing

ABSTRACT

Various embodiments are generally directed to techniques to generate stereoscopic views of a scene for purposes of providing an illusion of depth to the scene. An apparatus for stereoscopic rendering includes a processor component; a vertex shader to generate a plurality of vertices corresponding to primitives that are a representation of the scene to be displayed, the vertex shader transforming a first instance of the plurality of vertices to a first projected space in a first portion of a two-dimensional (2D) area and transforming a second instance of the plurality of vertices to a second projected space in the 2D area, the first portion of the 2D area corresponding to a first stereoscopic view of the scene and the second portion of the 2D area corresponding to a second stereoscopic view of the scene.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of, claims the benefit of andpriority to previously filed U.S. patent application Ser. No. 14/038,725filed Sep. 26, 2013, entitled “STEREOSCOPIC RENDERING USING VERTIXSHADER INSTANCING”, which is incorporated herein by reference in itsentirety.

BACKGROUND

Modern displays include the ability to provide a three-dimensional (3D)viewing experience. For example, stereoscopic displays achieve aperception of 3D depth by presenting an image for each eye of a viewer.More particularly, similar, but slightly offset depictions of a sceneare rendered, one to be viewed by the left eye and one to be viewed bythe right eye. The viewer's brain then commingles the images such that a3D depth to the scene rendered in the image is perceived. Somestereoscopic displays rely on companion glasses that work in conjunctionwith the display so that each eye is allowed to view the image intendedfor that eye. For example, the glasses may include filters or shuttersthat open and close in concert with the display frequency. More complexstereoscopic viewing experiences exist, such as, auto-stereoscopicdisplays, holographic displays, etc.

Accordingly, stereoscopic techniques require multiple views of eachscene. For example, a basic stereoscopic display requires a right eyeand a left eye version of each scene. Conventional techniquesindividually render each view of a particular scene. Said differently,each scene is processed through the rendering pipeline for everynecessary view (e.g., right eye, left eye, etc.) Rendering each scenemore than once causes significant overhead for graphics processingcomponents and central processing components of a system.

In order to alleviate this burden, some techniques employ a geometryshader to duplicate the geometry of the objects depicted in the sceneand transform them for each stereoscopic view. For example, the scenewould be processed through the rendering pipeline once, passed to thegeometry shader, where the geometry in the scene is duplicated andtransformed to produce the multiple views of the scene. Many computingplatforms and graphic software applications, however, lack support forgeometry shaders. Furthermore, the present of geometry shaders in arendering pipeline adds computational overhead and complexity aboverendering pipelines that do not have geometry shaders. Additionally, aswill be appreciated, implementing geometry shaders in hardware istypically much more complex than vertex shaders as geometry shaders havevariable output capabilities for fixed inputs whereas vertex shadershave fixed outputs for fixed inputs. As such, scheduling threads forvertex shader is typically simpler than for geometry shaders.Furthermore, implementation and performance of vertex shaders isgenerally superior to that of geometry shaders.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an embodiment of a stereoscopic rendering system.

FIGS. 2-3 each illustrate a portion of an embodiment of the stereoscopicrendering system.

FIG. 4 illustrates generating of vertices corresponding to primitivesrepresenting a scene to be displayed according to an embodiment.

FIG. 5 illustrates generation of instances of vertices and transformingthem to positions within portions of a 2D area corresponding tostereoscopic views of a scene to be displayed according to anembodiment.

FIG. 6 illustrates a logic flow according to an embodiment.

FIG. 7 illustrates a processing architecture according to an embodiment.

DETAILED DESCRIPTION

Various embodiments are generally directed to techniques to formmultiple views of a scene for display using stereoscopic and/orholographic display devices. As used herein, stereoscopic refersgenerally to displaying multiple views of a scene to provide an illusionof depth to the scene, and can be implemented as a variety of differentdisplay technologies. Use of the term “stereoscopic” is not otherwiseintended to be limiting. For example, as used herein, stereoscopic maybe interpreted to include holographic techniques or other techniques forproviding an illusion of depth to a 2D representation of a scene using anumber of views of the scene.

Rendering a scene for stereoscopic viewing includes processing a numberof vertices corresponding to primitives (e.g., triangles,quadrilaterals, etc.) that define objects depicted in the scene througha rendering pipeline. The vertices are processed to determine positionsof the vertices in a two-dimensional (2D) representation of the scenefor each stereoscopic view (e.g., left eye view, right eye view, etc.)The positions of each vertex in the 2D representations are typicallyoffset one from another, which assists in creating the illusion of depth(explained in greater detail below.) Furthermore, the rendering pipelineincludes determining various characteristics for the primitives, suchas, color, shading, etc. The 2D representation of each stereoscopic viewcan then be displayed using a stereoscopic display device (e.g., displaywith stereoscopic glasses, auto-stereoscopic display, holographicprojector, etc.) in order to provide viewers with an illusion of depthto the 2D representation of the scene.

For example, a stereoscopic viewing experience can be created by adisplay and associated glasses having closable apertures over each eye.The apertures of the glasses are configured to open and close infrequency with the displayed stereoscopic views. For example, when theleft eye stereoscopic view is displayed, the aperture in front of auser's left eye can be opened and the aperture in front of the user'sright eye can be closed. Likewise, when the right eye stereoscopic viewis displayed, the aperture in front of a user's right eye can be openedand the aperture in front of the user's left eye can be closed. In thismanner, a user may be presented with stereoscopic views that areindividually perceived by each eye. The user's brain then comminglesthese perceived images, and due to the positioning of the objectsdepicted in the scene (e.g., due to the slightly offset positioning ofeach vertex in the respective 2D representations) an illusion of depthis often achieved.

The present disclosure provides various examples of renderingstereoscopic views. In general, the rendering pipeline for stereoscopicviews includes a number of steps, often performed by differentcomponents of a rendering application or tool. An area drawer generatesan area corresponding to the 2D projection of the scene. The areaincludes portions for each stereoscopic view. For example, for astereoscopic view having a left eye view and a right eye view, the 2Darea will include both a first portion (e.g., left eye view) and asecond portion (e.g., right eye view.) A vertex shader then transformsvertices corresponding to objects depicted in the scene from athree-dimensional (3D) representation of the scene (e.g., as recorded bya camera, generated by graphics engine, etc.) to positions in thetwo-dimensional (2D) representation. Said differently, the vertex shadertransforms vertices corresponding to primitives that represent theobjects depicted in the scene from the vertices position in the 3D spaceof the scene to the 2D space of the generated area.

As the generated area includes portions for each stereoscopic view, thevertex shader transforms the vertices to positions in each of theportions of the area. The vertex shader includes an instance generatorto generate an instance of the vertices for each portion of thegenerated area. Each instance then allows the position of a vertex to bedefined for a particular portion of the area. A vertex transformertransforms each vertex to positions in each of the portions of the area.For example, for the generated area having a first portion (e.g., for aleft eye view) and a second portion (e.g., for a right eye view) thevertex shader creates two instances of each vertex, one for the firstportion and one for the second portion. The vertex transformer thentransforms the position of each vertex from the 3D position in the sceneto a position in each of the first and second portions of the 2D area.

With general reference to notations and nomenclature used herein,portions of the detailed description that follows may be presented interms of program procedures executed on a computer or network ofcomputers. These procedural descriptions and representations are used bythose skilled in the art to most effectively convey the substance oftheir work to others skilled in the art. A procedure is here, andgenerally, conceived to be a self-consistent sequence of operationsleading to a desired result. These operations are those requiringphysical manipulations of physical quantities. Usually, though notnecessarily, these quantities take the form of electrical, magnetic oroptical signals capable of being stored, transferred, combined,compared, and otherwise manipulated. It proves convenient at times,principally for reasons of common usage, to refer to these signals asbits, values, elements, symbols, characters, terms, numbers, or thelike. It should be noted, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to those quantities.

Further, these manipulations are often referred to in terms, such asadding or comparing, which are commonly associated with mentaloperations performed by a human operator. However, no such capability ofa human operator is necessary, or desirable in most cases, in any of theoperations described herein that form part of one or more embodiments.Rather, these operations are machine operations. Useful machines forperforming operations of various embodiments include general purposedigital computers as selectively activated or configured by a computerprogram stored within that is written in accordance with the teachingsherein, and/or include apparatus specially constructed for the requiredpurpose. Various embodiments also relate to apparatus or systems forperforming these operations. These apparatus may be speciallyconstructed for the required purpose or may include a general purposecomputer. The required structure for a variety of these machines will beapparent from the description given.

Reference is now made to the drawings, wherein like reference numeralsare used to refer to like elements throughout. In the followingdescription, for purposes of explanation, numerous specific details areset forth in order to provide a thorough understanding thereof. It maybe evident, however, that the novel embodiments can be practiced withoutthese specific details. In other instances, well known structures anddevices are shown in block diagram form in order to facilitate adescription thereof. The intention is to cover all modifications,equivalents, and alternatives within the scope of the claims.

FIG. 1 is a block diagram of an embodiment of a stereoscopic renderingsystem 1000 incorporating a computing device 100. The computing device100 may be any of a variety of types of computing devices, includingwithout limitation, a desktop computer system, a data entry terminal, alaptop computer, a netbook computer, a tablet computer, a handheldpersonal data assistant, a smartphone, a digital camera, a body-worncomputing device incorporated into clothing or wearable accessories(e.g., glasses, a watch, etc.,) a computing device integrated into avehicle (e.g., a car, a bicycle, a wheelchair, etc.), a server, acluster of servers, a server farm, a station, a wireless station, userequipment, and so forth. Furthermore, the computing device 100 may beany of a variety of types of display generating devices, includingwithout limitation, a DVD player, a portable video player, a consolevideo game system, a television receiver, a video content streamingdevice, and so forth. Embodiments are not limited in this context.

In some implementations, scene data may be generated by an applicationexecuting on the computing device 100 (or another computing device, notshown.) For example, a three-dimensional (3D) computer gamingapplication may generate the scene data. As another example, a 3Dcomputer graphics program, such as, an animation program, may generatethe scene data. As another example, a camera may record 3d data as amesh of primitives (e.g., triangles) by scanning real world objects. Asanother example, the present application may be implemented in heads updisplays and/or augmented reality glasses; such as, by detecting markersin the viewer's vision and augmenting them with stereoscopic viewsrendered as described herein. The generated scene data may then beprocessed through the stereoscopic rendering pipleline (explained ingreater detail below) to generate stereoscopic views of the scene.

Although not depicted, the computing device 100 may exchange signalsconveying scene data concerning a scene to be rendered through anetwork. For example, the computing device 100 may exchange signalsconveying scene data (or other data entirely unrelated to a scene to berendered) with other computing devices (also not shown) via the network.In various embodiments, the network may be a single network possiblylimited to extending within a single building or other relativelylimited area, a combination of connected networks possibly extending aconsiderable distance, and/or may include the Internet. Thus, thecomputing device 100 may be “networked” to another computing devicebased on any of a variety (or combination) of communicationstechnologies by which signals may be exchanged, including withoutlimitation, wired technologies employing electrically and/or opticallyconductive cabling, and wireless technologies employing infrared, radiofrequency or other forms of wireless transmission.

For example, the computing device 100 may receive scene data concerninga scene to be rendered from another computing device associated with acontent streaming service. As another example, the computing device 100may receive scene data concerning a scene to be rendered from anothercomputing device that is generating objects corresponding to the scene.Said differently, the computing device 100 may receive scene data fromanother computing device (e.g., a server corresponding to a 3D computergame, another computing device generating scene to be rendered, etc.).

It should be noted that although the computing device 100 is describedas a single device, the features of the individual computing devicemight be incorporated into multiple computing devices. Furthermore,although the computing device 100 is described having various featuresand functionality (e.g., display functionality) these features may beincorporated into another computing device, peripheral component, orotherwise implemented as a separate device.

In various embodiments, the computing device 100 incorporates one ormore of a processor component 110, a graphics processing unit (GPU) 120,a storage 130, controls 140, a display 150, and an interface 160 tocouple the computing device 100 to a network and/or another computingdevice. The storage 130 stores one or more of a control routine 132,scene data 210, 2D area 220, vertices 230, vertex instances 240, andworld-view-projection transformation matrix 250.

In the computing device 100, the control routine 132 incorporates asequence of instructions operative on the processor component 110 in itsrole as a main processor component to implement logic to perform variousfunctions. In executing the control routine 132, the processor component110 receives descriptions of a 3D representation of a scene and storesindications of the descriptions as scene data 210. As stated above, thedescriptions of the 3D representation of the scene may be generated byand/or transmitted from a variety of sources (e.g., a computer game, ananimation program, a modeling program, a video provider, etc.) Saiddifferently, the processor component 110 may receive the descriptions ofthe 3D representation from a software application, which may beexecuting on the computing device 100 or from another source, asdescribed above.

The control routine 132 further incorporates a sequence of instructionsoperative on the processor component 110 (e.g., in its role as a mainprocessor component) and/or the GPU 120 (e.g. in its role as a maingraphical processing unit) to implement logic to perform variousfunctions. In executing the control routine 132, either of the processorcomponent 110 or the GPU 120 may process the scene data 210 (e.g.through a rendering pipeline) to form multiple 2D representationscorresponding to the indications of the 3D representation of the scene,which may subsequently be displayed in a stereoscopic displayenvironment. As will be appreciated, a variety of known technologies oralgorithms may be used to implement a rendering pipeline. For example,without limitations, DirectX™ and OpenGL™ are but two examples oftechnologies for implementing rendering pipelines. Furthermore, portionsof the rendering pipeline may implemented by software and/or hardware.The exact nature of rendering pipelines and all specific implementationdetails are beyond the scope of this disclosure.

In executing the control routine 240, the processor component 110 and/orthe GPU 120 generates the 2D area 220, which has a portion for each ofthe stereoscopic views to be generated for the scene. For example, fortwo stereoscopic views (e.g., left and right eye views), the 2D area maybe formed as a “split screen” wherein one side the screen corresponds tothe left eye view and the other side of the screen corresponds to theright eye view. A number of different techniques are known forgenerating 2D areas during a rending process. The exact manner in whichthis is done may vary according to the particular implementation,rendering pipeline, etc.

Furthermore, in executing the control routine 132, the processorcomponent 110 and/or the GPU 120 further generate the vertices 230 fromscene data 210. More specifically, scene data 210 can be represented byone or more primitives (e.g., polygons, such as, triangles,quadrilaterals, etc.) Each of these primitives can then be defined bytheir vertices. A number of different techniques are known forrepresenting 3D scene data as primitives and extracting vertices forthese primitives. The exact manner in which this is done may varyaccording to the particular implementation, rendering pipeline, etc.

Additionally, in executing the control routing 132, the processorcomponent 110 and/or the GPU 120 may further generate the vertexinstances 240. The vertex instances 240 correspond to the vertices 230,but represent different instances of the vertices 230. Said differently,the vertex instances 240 represent different “copies” of the vertices230. For example, for two stereoscopic views (e.g., left and right eyeview,) two copies of the vertices 230 may be created and saved as thevertex instances 240. The vertex instances 240 represent the differencesbetween each copy (e.g, position, color, texture, etc.) while attributesthat are the same between instances may still be referenced in thevertices 230. A number of different techniques are known for forminginstances of vertices. The exact manner in which this is done may varyaccording to the particular implementation, rendering pipeline, etc.

In executing the control routine 132, the processor component 110 and/orthe GPU 120 may further transform the vertices 230 to projected spacesin each of the portions of the 2D area 220. More specifically, the 3Dposition of the vertices in the scene data may be transformed topositions in the 2D area 220 for each instance of the vertices 240. Saiddifferently, a position in the 2D area for each instance of the vertices230 represented in the vertex instances 240 may be determined. Theposition may be determined using matrix transformation based on part onthe world-view-projection transformation matrix 250.

In various embodiments, the processor components 110 may include any ofa wide variety of commercially available processors. Further, one ormore of these processor components may include multiple processors, amulti-threaded processor, a multi-core processor (whether the multiplecores coexist on the same or separate dies), and/or a multi-processorarchitecture of some other variety by which multiple physically separateprocessors are in some way linked.

In various embodiments, the GPU 120 may include any of a wide variety ofcommercially available graphics processing units. Further, one or moreof these graphics processing units may have dedicated memory,multiple-threaded processing and/or some other parallel processingcapability.

In various embodiments, the storage 130 may be based on any of a widevariety of information storage technologies, possibly including volatiletechnologies requiring the uninterrupted provision of electric power,and possibly including technologies entailing the use ofmachine-readable storage media that may or may not be removable. Thus,each of these storages may include any of a wide variety of types (orcombination of types) of storage device, including without limitation,read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM),Double-Data-Rate DRAM (DDR-DRAM), synchronous DRAM (SDRAM), static RAM(SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM),electrically erasable programmable ROM (EEPROM), flash memory, polymermemory (e.g., ferroelectric polymer memory), ovonic memory, phase changeor ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS)memory, magnetic or optical cards, one or more individual ferromagneticdisk drives, or a plurality of storage devices organized into one ormore arrays (e.g., multiple ferromagnetic disk drives organized into aRedundant Array of Independent Disks array, or RAID array). It should benoted that although each of these storages is depicted as a singleblock, one or more of these may include multiple storage devices thatmay be based on differing storage technologies. Thus, for example, oneor more of each of these depicted storages may represent a combinationof an optical drive or flash memory card reader by which programs and/ordata may be stored and conveyed on some form of machine-readable storagemedia, a ferromagnetic disk drive to store programs and/or data locallyfor a relatively extended period, and one or more volatile solid statememory devices enabling relatively quick access to programs and/or data(e.g., SRAM or DRAM). It should also be noted that each of thesestorages may be made up of multiple storage components based onidentical storage technology, but which may be maintained separately asa result of specialization in use (e.g., some DRAM devices employed as amain storage while other DRAM devices employed as a distinct framebuffer of a graphics controller).

In various embodiments, the interface 180 may employ any of a widevariety of signaling technologies enabling computing devices to becoupled to other devices as has been described. Each of these interfacesmay include circuitry providing at least some of the requisitefunctionality to enable such coupling. However, each of these interfacesmay also be at least partially implemented with sequences ofinstructions executed by corresponding ones of the processor components(e.g., to implement a protocol stack or other features). Whereelectrically and/or optically conductive cabling is employed, theseinterfaces may employ signaling and/or protocols conforming to any of avariety of industry standards, including without limitation, RS-232C,RS-422, USB, Ethernet (IEEE-802.3) or IEEE-1394. Where the use ofwireless signal transmission is entailed, these interfaces may employsignaling and/or protocols conforming to any of a variety of industrystandards, including without limitation, IEEE 802.11a, 802.11b, 802.11g,802.16, 802.20 (commonly referred to as “Mobile Broadband WirelessAccess”); Bluetooth; ZigBee; or a cellular radiotelephone service suchas GSM with General Packet Radio Service (GSM/GPRS), CDMA/1xRTT,Enhanced Data Rates for Global Evolution (EDGE), Evolution DataOnly/Optimized (EV-DO), Evolution For Data and Voice (EV-DV), High SpeedDownlink Packet Access (HSDPA), High Speed Uplink Packet Access (HSUPA),4G LTE, etc.

FIGS. 2-3 are simplified block diagrams of a portion of an embodiment ofthe stereoscopic rendering system 1000 of FIG. 1. In particular, FIG. 2depicts aspects of generating the 2D area 220 and the vertex instances240. FIG. 3 depicts aspects of generating the stereoscopic views. Invarious embodiments, the control routine 132 may include one or more ofan operating system, device drivers and/or application-level routines(e.g., so-called “software suites” provided on disc media, “applets”obtained from a remote server, etc.). Where an operating system isincluded, the operating system may be any of a variety of availableoperating systems appropriate for whatever corresponding ones of theprocessor component 110 and/or the GPU 120. Where one or more devicedrivers are included, those device drivers may provide support for anyof a variety of other components, whether hardware or softwarecomponents of the computer system 100.

Control routine 132 may include or be otherwise linked to communicationscomponent 142 executable by the processor component 110 to operate theinterface 160 to transmit and receive signals as has been described.Among the signals received may be signals conveying the scene data 210.As familiar to those skilled in the art, each of these communicationscomponents is selected to be operable with whatever type of interfacetechnology is selected to implement the interface 160.

Turning more specifically to FIG. 2, a rendering application 260 of thecontrol routine 132 receives scene data 210. It is noted, that scenedata 210 may take on a variety of forms, such as, for example, modelingdata related to a scene to be displayed. In some examples, the scenedata 210 may be represented in a 3D coordinate system. It will beappreciated, that a wide variety of techniques for storing andrepresenting scene data are known. Furthermore, the exact nature andformat of the scene data 210 may depend upon the implementation, thearchitecture of the computing device 100, the processor component 110,the GPU 120, or the hardware and/or software used to implement therendering application 260.

Vertices 230 are shown corresponding to scene data 210. Scene data 210may be represented by primitives, which may themselves be defined byvertices. Said differently, the vertices 230 then, correspond to theprimitives that represent the scene data 210. More particularly, thevertices 230 correspond to primitives that represent the objects definedby the scene data 210. The rendering application may include a component(e.g., vertex fetcher, etc.) that is not shown, which generates thevertices 230 from the scene data 210. Furthermore, as will beappreciated, the vertices 230 may include a variety of attributes, suchas, position, color, texture, shade, shadowing, potential optimizations,or otherwise any attribute used to describe the vertex and itcharacteristic for purposes of rendering graphics. These attributes maybe modified and/or updated as the vertices 230 are processed by therendering application. Said differently, the attributes of each vertexmay be changed as the vertices 230 are processed through the renderingpipeline. As such, the various depictions of the vertices 230 and vertexinstances 240 may, or may not, have different attributes from eachother, depending upon the stage of the rendering pipeline and whichattributes are modified as the vertices are processed by the renderingapplication.

The rendering application 260 includes an area drawer 262 to generatethe 2D area 220. In general, the 2D area 220 corresponds to an areasuitable for displaying the scene data 210 in a 2D format and containsportions for each of the stereoscopic views to be generated (refer toFIG. 5.) The rendering application 260 further includes a vertex shader263 having an instance generator 2631 to generate vertex instances 240from vertices 230. Furthermore, the vertex shader 263 includes a vertextransformer 2632 for transforming the vertex instances 240 to projectedspaces in the 2D area 220. In some embodiments, the vertex transformerincudes a matrix multiplier 2633 for transforming the vertex instances240 to projected spaces in the 2D area based at least in part onmultiplying the vertices 230 by a world-view-projection transformationmatrix 250.

It is noted, that the vertex instances 240 may derive some attributesfrom the corresponding vertices 230. Said differently, the vertexinstances 240 correspond to specific instances of the vertices 230.Accordingly, some attributes of the vertex instances will be “inherited”from the vertices 230. As such, the vertex instances 240 may merelyrecord data related to the attributes specific to each instance (e.g.,position, etc.) Additionally, it is noted, that the vertices 230 and thevertex instances 240 are depicted in various locations in FIGS. 2-3. Itis to be appreciated; that one or more attributes of the vertices 230and/or the vertex instances 240 may be adjusted as they are processed bythe rendering application 260. The depiction of the vertices 230 and thevertex instances 240 in these figures, is merely done to facilitateunderstanding, such as, by showing potential input an outputs andvarious steps of the rendering pipeline.

Turning now to FIG. 3, the rendering application 260 includes one ormore post vertex shader applications 264. It is to be noted, that avariety of steps or operations may be included in a rendering pipeline.The exact implementation details about all steps of the renderingpipeline are beyond the scope of this disclosure. In general, however,the rendering pipeline may include one or more “post vertex shader”operations, such as, for example, resterization, pixel shading,stenciling, thread scheduling, color blending, or depth testing. Theseoperations may be facilitated by processing the vertices 230 and/or thevertex instances 240 by one or more post vertex shader applications 264,such as, for example, a rasterizer 2641, a pixel shader 2642, astenciler, 2643, a thread scheduler 2644, a color blender 2645, or adepth tester 2646. The control routing 132 may further include a displayapplication 265 for displaying a first stereoscopic view 221 (e.g.corresponding to the first portion of the 2D area 220) and a secondstereoscopic view 222 (e.g. corresponding to the second portion of the2D area 220.)

FIGS. 4-5 depict various examples of scene data 210, 2D area data 220,vertices 230 and vertex instances 240. In one embodiment, scene data 210may comprise primitives 211 with corresponding vertices 230. A 2D area220 may be generated and vertex instances 240 of each of the vertices230 may be transformed to projected spaces in portions of the 2D area220. The portions of the 2D area 220 may correspond to stereoscopicviews of the scene data 210. It should be noted that FIGS. 4-5 depictextremely simplified views of the scene data 210, the primitives 211 andthe vertices 230. In particular it is envisioned that many moreprimitives than shown may be necessary to describe a typical scene.These primitives may take on any shape, size or geometry consistent withrepresenting scene data. The number of primitives 211 is merely shown ata quantity to facilitate understanding. Furthermore, the scene data 210is depicted in 2D. However, in practice, the scene data 210 may often berepresented in 3D. Additionally, the scene data 210 may be representedusing a different coordinate system than the 2D area 220. The specificdetails related to representing scene data 210 by primitives is beyondthe scope of this disclosure. In general, FIGS. 4-5 show an example ofstereoscopic views may be generated from scene data. Particularly,examples of how vertex instances corresponding to the scene data may begenerated and transformed to projected spaces within portions of a 2Darea, where each portion corresponds to a one of the stereoscopic views.These stereoscopic views may then be displayed in order to provide anillusion of depth to the scene.

Turning more specifically to FIG. 4, the vertices 230-1 to 230-6corresponding to primitives 211-1 and 211-2, which represent scene data210 are shown. As described above, primitives 211-1 and 211-2 representthe scene data 210. Said differently, the primitives 211-1 and 211-2represent objects within the scene to be displayed.

Turning now to FIG. 5 the area generator 262 of the renderingapplication 260 generates the 2D area 220. The generated 2D area 220includes portions (e.g., 221 and 222) corresponding to each of thestereoscopic views to be generated. For example, for two stereoscopicviews (e.g., left and right eye views) the 2D area 220 will include twoportions. For more stereoscopic views (e.g., for use withautostereoscopic displays, holographic displays, etc.,) the 2D area 220may include more portions. In some examples, such as, two stereoscopicviews, the 2D area 220 may be generated as a split screen. The vertextransformer 2632 of the vertex shader 263 of the rendering application260 transforms the vertices 230 to projected spaces in each of theportions of the 2D area 220 and saves the transformed positions as thevertex instances 240. For example, first vertex instances 241-1 to 241-6and second vertex instances 242-1 to 242-6 corresponding to the vertices230-1 to 230-6 are depicted positioned within the first portion 221 ofthe 2D area 220 and the second portion 222 of the 2D area 220.

FIG. 6 illustrates one embodiment of a logic flow 6100. The logic flow6100 may be representative of some or all of the operations executed byone or more embodiments described herein. More specifically, the logicflow 6100 may illustrate operations performed by the processor component110 and/or the GPU 120 in executing at least the control routine 132,and/or performed by other component(s) of the computing device 100.

At 6110, a processor component and/or a GPU of a computing device of astereoscopic rendering system (e.g., the processor component 110 and/orthe GPU 120 of the computing device 100 of the stereoscopic renderingsystem 1000) is caused by execution of a rendering application of acontrol routine to generate first and second instances of a plurality ofvertices corresponding to primitives that are a representation of ascene to be displayed. For example, the rendering application 260 of thecontrol routine 132 may generate the instances 240 (e.g., 241 and 242)of the vertices 230.

At 6120, the processor component and/or a GPU of a computing device of astereoscopic rendering system (e.g., the processor component 110 and/orthe GPU 120 of the computing device 100 of the stereoscopic renderingsystem 1000) is caused by execution of a rendering application of acontrol routine to transform the first instance of the plurality ofvertices to a first projected space in a first portion of 2D area. Forexample, the vertex transformer 2632 of the vertex shader 263 of therendering application of the control routine 132 may transform aninstance (e.g., 241) of each of the vertices 230 to a first projectedspace in the first portion 221 of the 2D area 220.

At 6130, the processor component and/or a GPU of a computing device of astereoscopic rendering system (e.g., the processor component 110 and/orthe GPU 120 of the computing device 100 of the stereoscopic renderingsystem 1000) is caused by execution of a rendering application of acontrol routine to transform the second instance of the plurality ofvertices to a first projected space in a first portion of 2D area. Forexample, the vertex transformer 2632 of the vertex shader 263 of therendering application of the control routine 132 may transform aninstance (e.g., 242) of each of the vertices 230 to a second projectedspace in the second portion 222 of the 2D area 220.

As can be seen from FIG. 5, the positioning of the instances of thevertices 241 and 242 are offset from each other relative to a fixedpoint (e.g., the center, etc.) in each of the portions of the 2D area.Accordingly, each portion may be used as a stereoscopic view anddisplayed to a user in a stereoscopic manner in order to provide anillusion of depth to the scene.

FIG. 7 illustrates an embodiment of an exemplary processing architecture3000 suitable for implementing various embodiments as previouslydescribed. More specifically, the processing architecture 3000 (orvariants thereof) may be implemented as part of the computing device100.

The processing architecture 3000 may include various elements commonlyemployed in digital processing, including without limitation, one ormore processors, multi-core processors, co-processors, memory units,chipsets, controllers, peripherals, interfaces, oscillators, timingdevices, video cards, audio cards, multimedia input/output (I/O)components, power supplies, etc. As used in this application, the terms“system” and “component” are intended to refer to an entity of acomputing device in which digital processing is carried out, that entitybeing hardware, a combination of hardware and software, software, orsoftware in execution, examples of which are provided by this depictedexemplary processing architecture. For example, a component can be, butis not limited to being, a process running on a processor component, theprocessor component itself, a storage device (e.g., a hard disk drive,multiple storage drives in an array, etc.) that may employ an opticaland/or magnetic storage medium, an software object, an executablesequence of instructions, a thread of execution, a program, and/or anentire computing device (e.g., an entire computer). By way ofillustration, both an application running on a server and the server canbe a component. One or more components can reside within a processand/or thread of execution, and a component can be localized on onecomputing device and/or distributed between two or more computingdevices. Further, components may be communicatively coupled to eachother by various types of communications media to coordinate operations.The coordination may involve the uni-directional or bi-directionalexchange of information. For instance, the components may communicateinformation in the form of signals communicated over the communicationsmedia. The information can be implemented as signals allocated to one ormore signal lines. A message (including a command, status, address ordata message) may be one of such signals or may be a plurality of suchsignals, and may be transmitted either serially or substantially inparallel through any of a variety of connections and/or interfaces.

As depicted, in implementing the processing architecture 3000, acomputing device may include at least a processor component 950, astorage 960, an interface 990 to other devices, and a coupling 955. Aswill be explained, depending on various aspects of a computing deviceimplementing the processing architecture 3000, including its intendeduse and/or conditions of use, such a computing device may furtherinclude additional components, such as without limitation, a displayinterface 985.

The coupling 955 may include one or more buses, point-to-pointinterconnects, transceivers, buffers, crosspoint switches, and/or otherconductors and/or logic that communicatively couples at least theprocessor component 950 to the storage 960. Coupling 955 may furthercouple the processor component 950 to one or more of the interface 990,the audio subsystem 970 and the display interface 985 (depending onwhich of these and/or other components are also present). With theprocessor component 950 being so coupled by couplings 955, the processorcomponent 950 is able to perform the various ones of the tasks describedat length, above, for whichever one(s) of the aforedescribed computingdevices implement the processing architecture 3000. Coupling 955 may beimplemented with any of a variety of technologies or combinations oftechnologies by which signals are optically and/or electricallyconveyed. Further, at least portions of couplings 955 may employ timingsand/or protocols conforming to any of a wide variety of industrystandards, including without limitation, Accelerated Graphics Port(AGP), CardBus, Extended Industry Standard Architecture (E-ISA), MicroChannel Architecture (MCA), NuBus, Peripheral Component Interconnect(Extended) (PCI-X), PCI Express (PCI-E), Personal Computer Memory CardInternational Association (PCMCIA) bus, HyperTransport™, QuickPath, andthe like.

As previously discussed, the processor component 950 (corresponding tothe processor component 110) may include any of a wide variety ofcommercially available processors, employing any of a wide variety oftechnologies and implemented with one or more cores physically combinedin any of a number of ways.

As previously discussed, the storage 960 (corresponding to the storage130) may be made up of one or more distinct storage devices based on anyof a wide variety of technologies or combinations of technologies. Morespecifically, as depicted, the storage 960 may include one or more of avolatile storage 961 (e.g., solid state storage based on one or moreforms of RAM technology), a non-volatile storage 962 (e.g., solid state,ferromagnetic or other storage not requiring a constant provision ofelectric power to preserve their contents), and a removable mediastorage 963 (e.g., removable disc or solid state memory card storage bywhich information may be conveyed between computing devices). Thisdepiction of the storage 960 as possibly including multiple distincttypes of storage is in recognition of the commonplace use of more thanone type of storage device in computing devices in which one typeprovides relatively rapid reading and writing capabilities enabling morerapid manipulation of data by the processor component 950 (but possiblyusing a “volatile” technology constantly requiring electric power) whileanother type provides relatively high density of non-volatile storage(but likely provides relatively slow reading and writing capabilities).

Given the often different characteristics of different storage devicesemploying different technologies, it is also commonplace for suchdifferent storage devices to be coupled to other portions of a computingdevice through different storage controllers coupled to their differingstorage devices through different interfaces. By way of example, wherethe volatile storage 961 is present and is based on RAM technology, thevolatile storage 961 may be communicatively coupled to coupling 955through a storage controller 965 a providing an appropriate interface tothe volatile storage 961 that perhaps employs row and column addressing,and where the storage controller 965 a may perform row refreshing and/orother maintenance tasks to aid in preserving information stored withinthe volatile storage 961. By way of another example, where thenon-volatile storage 962 is present and includes one or moreferromagnetic and/or solid-state disk drives, the non-volatile storage962 may be communicatively coupled to coupling 955 through a storagecontroller 965 b providing an appropriate interface to the non-volatilestorage 962 that perhaps employs addressing of blocks of informationand/or of cylinders and sectors. By way of still another example, wherethe removable media storage 963 is present and includes one or moreoptical and/or solid-state disk drives employing one or more pieces ofmachine-readable storage medium 969, the removable media storage 963 maybe communicatively coupled to coupling 955 through a storage controller965 c providing an appropriate interface to the removable media storage963 that perhaps employs addressing of blocks of information, and wherethe storage controller 965 c may coordinate read, erase and writeoperations in a manner specific to extending the lifespan of themachine-readable storage medium 969.

One or the other of the volatile storage 961 or the non-volatile storage962 may include an article of manufacture in the form of amachine-readable storage media on which a routine including a sequenceof instructions executable by the processor component 950 to implementvarious embodiments may be stored, depending on the technologies onwhich each is based. By way of example, where the non-volatile storage962 includes ferromagnetic-based disk drives (e.g., so-called “harddrives”), each such disk drive typically employs one or more rotatingplatters on which a coating of magnetically responsive particles isdeposited and magnetically oriented in various patterns to storeinformation, such as a sequence of instructions, in a manner akin tostorage medium such as a floppy diskette. By way of another example, thenon-volatile storage 962 may be made up of banks of solid-state storagedevices to store information, such as sequences of instructions, in amanner akin to a compact flash card. Again, it is commonplace to employdiffering types of storage devices in a computing device at differenttimes to store executable routines and/or data. Thus, a routineincluding a sequence of instructions to be executed by the processorcomponent 950 to implement various embodiments may initially be storedon the machine-readable storage medium 969, and the removable mediastorage 963 may be subsequently employed in copying that routine to thenon-volatile storage 962 for longer term storage not requiring thecontinuing presence of the machine-readable storage medium 969 and/orthe volatile storage 961 to enable more rapid access by the processorcomponent 950 as that routine is executed.

As previously discussed, the interface 990 (possibly corresponding tothe interface 160) may employ any of a variety of signaling technologiescorresponding to any of a variety of communications technologies thatmay be employed to communicatively couple a computing device to one ormore other devices. Again, one or both of various forms of wired orwireless signaling may be employed to enable the processor component 950to interact with input/output devices (e.g., the depicted examplekeyboard 920 or printer 925) and/or other computing devices, possiblythrough a network or an interconnected set of networks. In recognitionof the often greatly different character of multiple types of signalingand/or protocols that must often be supported by any one computingdevice, the interface 990 is depicted as including multiple differentinterface controllers 995 a, 995 b and 995 c. The interface controller995 a may employ any of a variety of types of wired digital serialinterface or radio frequency wireless interface to receive seriallytransmitted messages from user input devices, such as the depictedkeyboard 920. The interface controller 995 b may employ any of a varietyof cabling-based or wireless signaling, timings and/or protocols toaccess other computing devices through the depicted network 999 (perhapsa network made up of one or more links, smaller networks, or perhaps theInternet). The interface 995 c may employ any of a variety ofelectrically conductive cabling enabling the use of either serial orparallel signal transmission to convey data to the depicted printer 925.Other examples of devices that may be communicatively coupled throughone or more interface controllers of the interface 990 include, withoutlimitation, microphones, remote controls, stylus pens, card readers,finger print readers, virtual reality interaction gloves, graphicalinput tablets, joysticks, other keyboards, retina scanners, the touchinput component of touch screens, trackballs, various sensors, a cameraor camera array to monitor movement of persons to accept commands and/ordata signaled by those persons via gestures and/or facial expressions,laser printers, inkjet printers, mechanical robots, milling machines,etc.

Where a computing device is communicatively coupled to (or perhaps,actually incorporates) a display (e.g., the depicted example display980, corresponding to the display 150), such a computing deviceimplementing the processing architecture 3000 may also include thedisplay interface 985. Although more generalized types of interface maybe employed in communicatively coupling to a display, the somewhatspecialized additional processing often required in visually displayingvarious forms of content on a display, as well as the somewhatspecialized nature of the cabling-based interfaces used, often makes theprovision of a distinct display interface desirable. Wired and/orwireless signaling technologies that may be employed by the displayinterface 985 in a communicative coupling of the display 980 may makeuse of signaling and/or protocols that conform to any of a variety ofindustry standards, including without limitation, any of a variety ofanalog video interfaces, Digital Video Interface (DVI), DisplayPort,etc.

More generally, the various elements of the computing devices describedand depicted herein may include various hardware elements, softwareelements, or a combination of both. Examples of hardware elements mayinclude devices, logic devices, components, processors, microprocessors,circuits, processor components, circuit elements (e.g., transistors,resistors, capacitors, inductors, and so forth), integrated circuits,application specific integrated circuits (ASIC), programmable logicdevices (PLD), digital signal processors (DSP), field programmable gatearray (FPGA), memory units, logic gates, registers, semiconductordevice, chips, microchips, chip sets, and so forth. Examples of softwareelements may include software components, programs, applications,computer programs, application programs, system programs, softwaredevelopment programs, machine programs, operating system software,middleware, firmware, software modules, routines, subroutines,functions, methods, procedures, software interfaces, application programinterfaces (API), instruction sets, computing code, computer code, codesegments, computer code segments, words, values, symbols, or anycombination thereof. However, determining whether an embodiment isimplemented using hardware elements and/or software elements may vary inaccordance with any number of factors, such as desired computationalrate, power levels, heat tolerances, processing cycle budget, input datarates, output data rates, memory resources, data bus speeds and otherdesign or performance constraints, as desired for a givenimplementation.

Some embodiments may be described using the expression “one embodiment”or “an embodiment” along with their derivatives. These terms mean that aparticular feature, structure, or characteristic described in connectionwith the embodiment is included in at least one embodiment. Theappearances of the phrase “in one embodiment” in various places in thespecification are not necessarily all referring to the same embodiment.Further, some embodiments may be described using the expression“coupled” and “connected” along with their derivatives. These terms arenot necessarily intended as synonyms for each other. For example, someembodiments may be described using the terms “connected” and/or“coupled” to indicate that two or more elements are in direct physicalor electrical contact with each other. The term “coupled,” however, mayalso mean that two or more elements are not in direct contact with eachother, but yet still co-operate or interact with each other.Furthermore, aspects or elements from different embodiments may becombined.

It is emphasized that the Abstract of the Disclosure is provided toallow a reader to quickly ascertain the nature of the technicaldisclosure. It is submitted with the understanding that it will not beused to interpret or limit the scope or meaning of the claims. Inaddition, in the foregoing Detailed Description, it can be seen thatvarious features are grouped together in a single embodiment for thepurpose of streamlining the disclosure. This method of disclosure is notto be interpreted as reflecting an intention that the claimedembodiments require more features than are expressly recited in eachclaim. Rather, as the following claims reflect, inventive subject matterlies in less than all features of a single disclosed embodiment. Thusthe following claims are hereby incorporated into the DetailedDescription, with each claim standing on its own as a separateembodiment. In the appended claims, the terms “including” and “in which”are used as the plain-English equivalents of the respective terms“comprising” and “wherein,” respectively. Moreover, the terms “first,”“second,” “third,” and so forth, are used merely as labels, and are notintended to impose numerical requirements on their objects.

What has been described above includes examples of the disclosedarchitecture. It is, of course, not possible to describe everyconceivable combination of components and/or methodologies, but one ofordinary skill in the art may recognize that many further combinationsand permutations are possible. Accordingly, the novel architecture isintended to embrace all such alterations, modifications and variationsthat fall within the spirit and scope of the appended claims. Thedetailed disclosure now turns to providing examples that pertain tofurther embodiments. The examples provided below are not intended to belimiting.

An example of an apparatus for performing stereoscopic rendering of ascene includes a processor component, a rendering application forexecution by the processor component, the rendering applicationincluding a vertex shader to generate a plurality of verticescorresponding to primitives that are a representation of a scene to bedisplayed, the vertex shader including an instance generator to generatefirst and second instances of the plurality of vertices, and a vertextransformer to transform the first instance of the plurality of verticesto a first projected space in a first portion of a two-dimensional (2D)area and to transform the second instance of the plurality of verticesto a second projected space in the 2D area, the first portion of the 2Darea corresponding to a first stereoscopic view of the scene and thesecond portion of the 2D area corresponding to a second stereoscopicview of the scene, wherein the first and second stereoscopic views maybe displayed to provide an illusion of depth in a 2D representation ofthe scene.

The above apparatus wherein the processor component is graphicsprocessing unit (GPU)

The above apparatus wherein the vertex transformer comprising a matrixmultiplier to multiply the plurality of vertices with aworld-view-projection transformation matrix to determine locations inthe 2D area corresponding to the first projected space and the secondprojected space.

The above apparatus, wherein the world-view-projection transformationmatrix defines at least one attribute for the first instance of theplurality of vertices and at least one attribute for the second instanceof the plurality of vertices.

The above apparatus, wherein the at least one attribute is a positionaloffset

The above apparatus, wherein the rendering application furthercomprising an area drawer to generate the 2D area having the firstportion for the first stereoscopic view of the scene and the secondportion for the second stereoscopic view of the scene.

The above apparatus, wherein the instance generator to generate a thirdinstance of the plurality of vertices and the vertex transformer totransform the plurality of vertices corresponding to the third instanceto a third projected space in a third portion of the 2D representation,the third portion of the 2D representation corresponding to a thirdstereoscopic view of the scene.

The above apparatus, wherein the first and second projected space areoffset from each other relative to a fixed point in each of the firstand second portions of the 2D representation.

The above apparatus, wherein the rendering application furthercomprising a post shader application to apply one or more renderingeffects to the plurality of vertices.

The above apparatus, wherein the one or more post shader applicationsare selected from the group consisting of rasterizer, pixel shader,stenciler, thread scheduler, color blender, or depth tester.

The above apparatus, wherein the first instance of the plurality ofvertices and the second instance of the plurality of vertices sharing atleast one characteristic.

The above apparatus, wherein the at least one characteristic is selectedfrom the group consisting of normal, texture coordinates, or color.

The above apparatus, further comprising a display and a displayapplications for execution by the processor component, the displayapplication to cause the display to reproduce the first portion of the2D representation of the scene in a first time period and reproduce thesecond portion of the 2D representation of the scene in a second timeperiod.

The above apparatus, wherein the first and second time periodcorresponding to a display frequency.

Another example of an apparatus to generate vertices for graphicalrendering includes graphics processing unit (GPU), an instance generatorfor execution by the GPU to generate first and second instances of aplurality of vertices corresponding to primitives that are arepresentation of a scene to be displayed, and a vertex transformer forexecution by the GPU to transform the first instance of the plurality ofvertices to a first projected space in a first portion of atwo-dimensional (2D) area and to transform the second instance of theplurality of vertices to a second projected space in the 2D area, thefirst portion of the 2D area corresponding to a first stereoscopic viewof the scene and the second portion of the 2D area corresponding to asecond stereoscopic view of the scene, wherein the first and secondstereoscopic views may be displayed to provide an illusion of depth in a2D representation of the scene.

The above apparatus, further comprising a matrix multiplier forexecution by the GPU to multiply the plurality of vertices with aworld-view-projection transformation matrix to determine locations inthe 2D area corresponding to the first projected space and the secondprojected space.

The above apparatus, wherein the world-view-projection transformationmatrix defines at least one attribute for the first instance of theplurality of vertices and at least one attribute for the second instanceof the plurality of vertices.

The above apparatus, wherein the at least one attribute is a positionaloffset.

The above apparatus, wherein the instance generator to generate a thirdinstance of the plurality of vertices and the vertex transformer totransform the plurality of vertices corresponding to the third instanceto a third projected space in a third portion of the 2D representation,the third portion of the 2D representation corresponding to a thirdstereoscopic view of the scene.

The above apparatus of claim 15, wherein the first and second projectedspace are offset from each other relative to a fixed point in each ofthe first and second portions of the 2D representation.

The above apparatus, wherein the first instance of the plurality ofvertices and the second instance of the plurality of vertices sharing atleast one characteristic.

The above apparatus, wherein the at least one characteristic is selectedfrom the group consisting of normal, texture coordinates, or color.

An example of a computing-implemented method for rendering stereoscopicviews of a scene includes generating first and second instances of aplurality of vertices corresponding to primitives that are arepresentation of a scene to be displayed, transforming the firstinstance of the plurality of vertices to a first projected space in afirst portion of a two-dimensional (2D) area, the first portion of the2D area corresponding to a first stereoscopic view of the scene, andtransforming the second instance of the plurality of vertices to asecond projected space in the 2D area, the second portion of the 2D areacorresponding to a second stereoscopic view of the scene, wherein thefirst and second stereoscopic views may be displayed to provide anillusion of depth in a 2D representation of the scene.

The above computer-implemented method, further comprising determininglocations in the 2D area corresponding to the first projected space andthe second projected space based at least in part on multiplying theplurality of vertices with a world-view-projection transformation matrixto determine.

The above computer-implemented method, wherein the world-view-projectiontransformation matrix defines at least one attribute for the firstinstance of the plurality of vertices and at least one attribute for thesecond instance of the plurality of vertices.

The above computer-implemented method, wherein the at least oneattribute is a positional offset

The above computer-implemented method, further comprising generating the2D area having the first portion for the first stereoscopic view of thescene and the second portion for the second stereoscopic view of thescene.

The above computer-implemented method, further comprising generating athird instance of the plurality of vertices and transforming the thirdinstance of the plurality of vertices to a third projected space in athird portion of the 2D representation, the third portion of the 2Drepresentation corresponding to a third stereoscopic view of the scene.

The above computer-implemented method, wherein the first and secondprojected space are offset from each other relative to a fixed point ineach of the first and second portions of the 2D representation.

The above computer-implemented method, further comprising applying oneor more post vertex-shader effects to the plurality of vertices.

The above computer-implemented method, wherein the one or more postvertex-shader effects are selected from the group consisting ofrasterizion, pixel shading, stenciling, thread scheduling, colorblending, or depth testing.

The above computer-implemented method, wherein the first instance of theplurality of vertices and the second instance of the plurality ofvertices sharing at least one characteristic.

The above computer-implemented method, wherein the at least onecharacteristic is selected from the group consisting of normal, texturecoordinates, or color.

The above computer-implemented method, further comprising displaying thefirst portion of the 2D representation of the scene in a first timeperiod and displaying the second portion of the 2D representation of thescene in a second time period.

The above computer-implemented method, the first and second time periodcorresponding to a display frequency.

At least one machine-readable storage medium comprising instructionsthat when executed by a computing device, cause the computing device toperform any of the above computer-implemented methods.

An apparatus to render stereoscopic views of a scene comprising meansfor performing any of the above computer-implemented methods.

An example of at least one machine-readable storage medium comprisinginstructions that when executed by a computing device, cause thecomputing device to generate first and second instances of a pluralityof vertices corresponding to primitives that are representation of ascene to be displayed, transform the first instance of the plurality ofvertices to a first projected space in a first portion of atwo-dimensional (2D) area, the first portion of the 2D areacorresponding to a first stereoscopic view of the scene, and transformthe second instance of the plurality of vertices to a second projectedspace in the 2D area, the second portion of the 2D area corresponding toa second stereoscopic view of the scene, wherein the first and secondstereoscopic views may be displayed to provide an illusion of depth in a2D representation of the scene, the first and second projected spacesoffset from each other relative to a fixed point in each of the firstand second portions of the 2D representation.

The above at least one machine-readable storage medium, the computingdevice caused to determine locations in the 2D area corresponding to thefirst projected space and the second projected space based at least inpart on multiplying the plurality of vertices with aworld-view-projection transformation matrix to determine.

The above at least one machine-readable storage medium, wherein theworld-view-projection transformation matrix defines at least oneattribute for the first instance of the plurality of vertices and atleast one attribute for the second instance of the plurality ofvertices.

The above at least one machine-readable storage medium, wherein the atleast one attribute is a positional offset.

The above at least one machine-readable storage medium, the computingdevice caused to generate the 2D area having the first portion for thefirst stereoscopic view of the scene and the second portion for thesecond stereoscopic view of the scene.

The above at least one machine-readable storage medium, the computingdevice caused to generate a third instance of the plurality of verticesand transform the third instance of the plurality of vertices to a thirdprojected space in a third portion of the 2D representation, the thirdportion of the 2D representation corresponding to a third stereoscopicview of the scene.

The above at least one machine-readable storage medium, the computingdevice caused to apply one or more post vertex-shader effects to theplurality of vertices.

The above at least one machine-readable storage medium, wherein the oneor more post vertex-shader effects are selected from the groupconsisting of rasterizion, pixel shading, stenciling, thread scheduling,color blending, or depth testing.

The above at least one machine-readable storage medium, the firstinstance of the plurality of vertices and the second instance of theplurality of vertices sharing at least one characteristic.

The above at least one machine-readable storage medium, wherein the atleast one characteristic is selected from the group consisting ofnormal, texture coordinates, or color.

The above at least one machine-readable storage medium, the computingdevice caused to display the first portion of the 2D representation ofthe scene in a first time period and display the second portion of the2D representation of the scene in a second time period.

The above at least one machine-readable storage medium, the first andsecond time period corresponding to a display frequency.

What is claimed is:
 1. An apparatus to perform stereoscopic rendering ofa scene, comprising: a processor component; a vertex shader comprising:an instance generator to generate first and second instances of theplurality of vertices, the plurality of vertices comprising vertexpositions in a three-dimensional (3D) space of the scene; and a vertextransformer to transform the first instance to first projected space ina two-dimensional (2D) area corresponding to a first stereoscopic viewof the scene and to transform the second instance to a second projectedspace in the 2D area corresponding to a second stereoscopic view of thescene.
 2. The apparatus of claim 1, wherein the processor component isgraphics processing unit (GPU).
 3. The apparatus of claim 1, the vertextransformer comprising a matrix multiplier to multiply the plurality ofvertices with a world-view-projection transformation matrix to determinelocations in the 2D area corresponding to the first projected space andthe second projected space, wherein the world-view-projectiontransformation matrix defines at least one attribute for the firstinstance of the plurality of vertices and at least one attribute for thesecond instance of the plurality of vertices.
 4. The apparatus of claim3, wherein the at least one attribute of the first instance and thesecond instance is a positional offset.
 5. The apparatus of claim 1,further comprising an area drawer to generate the 2D area having thefirst portion for the first stereoscopic view of the scene and thesecond portion for the second stereoscopic view of the scene.
 6. Theapparatus of claim 1, the instance generator to generate a thirdinstance of the plurality of vertices and the vertex transformer totransform the plurality of vertices corresponding to the third instanceto a third projected space in a third portion of the 2D representation,the third portion of the 2D representation corresponding to a thirdstereoscopic view of the scene.
 7. The apparatus of claim 1, furthercomprising one or more post shader application to apply one or morerendering effects to the plurality of vertices, wherein the one or morepost shader applications are selected from the group consisting ofrasterizer, pixel shader, stenciler, thread scheduler, color blender, ordepth tester.
 8. The apparatus of claim 1, the first instance of theplurality of vertices and the second instance of the plurality ofvertices sharing at least one characteristic.
 9. The apparatus of claim8, wherein the at least one characteristic is selected from the groupconsisting of normal, texture coordinates, or color.
 10. An apparatus togenerate vertices for graphical rendering comprising: graphicsprocessing unit (GPU); an instance generator for execution by the GPU togenerate first and second instances of a plurality of vertices, theplurality of vertices comprising vertex positions in a three-dimensional(3D) space of the scene; and a vertex transformer for execution by theGPU to transform the first instance to a first projected space in atwo-dimensional (2D) area corresponding to a first stereoscopic view ofthe scene and to transform the second instance to a second projectedspace in the 2D area corresponding to a second stereoscopic view of thescene.
 11. The apparatus of claim 10, further comprising a matrixmultiplier for execution by the GPU to multiply the plurality ofvertices with a world-view-projection transformation matrix to determinelocations in the 2D area corresponding to the first projected space andthe second projected space.
 12. The apparatus of claim 11, wherein theworld-view-projection transformation matrix defines at least oneattribute for the first instance of the plurality of vertices and atleast one attribute for the second instance of the plurality ofvertices.
 13. The apparatus of claim 12, wherein the at least oneattribute of the first instance and the second instance is a positionaloffset.
 14. A computing-implemented method for rendering stereoscopicviews of a scene comprising: generating first and second instances ofthe plurality of vertices, the plurality of vertices comprising vertexpositions in a three-dimensional (3D) space of the scene; transformingthe first instance to first projected space in a two-dimensional (2D)area corresponding to a first stereoscopic view of the scene; andtransforming the second instance to a second projected space in the 2Darea corresponding to a second stereoscopic view of the scene.
 15. Thecomputer-implemented method of claim 14, further comprising determininglocations in the 2D area corresponding to the first projected space andthe second projected space based at least in part on multiplying theplurality of vertices with a world-view-projection transformation matrixto determine.
 16. The computer-implemented method of claim 15, whereinthe world-view-projection transformation matrix defines at least oneattribute for the first instance of the plurality of vertices and atleast one attribute for the second instance of the plurality ofvertices.
 17. The computer-implemented method of claim 16, wherein theat least one attribute of the first instance and the second instance isa positional offset.
 18. The computer-implemented method of claim 14,further comprising generating the 2D area having the first portion forthe first stereoscopic view of the scene and the second portion for thesecond stereoscopic view of the scene.
 19. The computer-implementedmethod of claim 14, further comprising applying one or more postvertex-shader effects to the plurality of vertices.
 20. Thecomputer-implemented method of claim 19, wherein the one or more postvertex-shader effects are selected from the group consisting ofrasterizion, pixel shading, stenciling, thread scheduling, colorblending, or depth testing.
 21. The computer-implemented method of claim14, further comprising displaying the first portion of the 2Drepresentation of the scene in a first time period and displaying thesecond portion of the 2D representation of the scene in a second timeperiod.
 22. The computer-implemented method of claim 21, the first andsecond time period corresponding to a display frequency.
 23. At leastone machine-readable non-transitory storage medium comprisinginstructions that when executed by a computing device, cause thecomputing device to: generate first and second instances of theplurality of vertices, the plurality of vertices comprising vertexpositions in a three-dimensional (3D) space of the scene; transform thefirst instance to first projected space in a two-dimensional (2D) areacorresponding to a first stereoscopic view of the scene; and transformthe second instance to a second projected space in the 2D areacorresponding to a second stereoscopic view of the scene.
 24. The atleast one machine-readable non-transitory storage medium of claim 23,the computing device caused to determine locations in the 2D areacorresponding to the first projected space and the second projectedspace based at least in part on multiplying the plurality of verticeswith a world-view-projection transformation matrix to determine.
 25. Theat least one machine-readable non-transitory storage medium of claim 24,wherein the world-view-projection transformation matrix defines at leastone attribute for the first instance of the plurality of vertices and atleast one attribute for the second instance of the plurality ofvertices.